package config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RedisClient 配置
 *
 * @Date: 2024/07/05/7:54
 */
@Configuration
public class RedissonConfig {
    /**
     * 所有业务代码都使用RedissonClient
     */
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClient() {
        // 创建配置 - Redisson.Config
        Config config = new Config();
        // 连接到本地redis数据库
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        // 设置主线程的锁过期时间,单位(毫秒)
        // Redisson默认的超时时间是30s
        // 如果主线程还在执行,那么看门狗线程就会在 1/3 * outTime 的时刻刷新锁过期时间,所以默认每10s刷新一次
        config.setLockWatchdogTimeout(10000L); // 这里的过期时间是10s,每3.3s刷新一次锁过期时间
        // 返回redissonClient
        return Redisson.create(config);
    }
}
